import 'package:aio/aio.dart';
import 'package:aio/generated/l10n.dart';
import 'package:app/generated/app_strings.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'app_android_alarm_manager_plus.dart';
import 'src/ui/route/launch/launch.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:intl/intl.dart';
void main() {
  //WidgetsFlutterBinding.ensureInitialized() 是 Flutter 框架中用于确保 widgets 绑定（bindings）被初始化的方法。
  //这通常在你需要在 widgets 层之外使用 Flutter 服务时发生，例如在插件的 main() 方法或者 Dart 程序的 main() 方法中。
  //如果你在插件中需要使用 Flutter 的服务，比如访问 package_info 插件中的版本信息，你可能需要在插件的 main() 方法中调用这个方法。
  WidgetsFlutterBinding
      .ensureInitialized(); //fixme 发现很多插件，main()里都有这么一行。所以我们也加上。
  runApp(MyApp());
  //appAndroidAlarmManagerPlusMain();//fixme 暂时关闭后台通知。
}

///初始化工作
void init(BuildContext context) {
  try {
    //状态栏背景透明
    StatusUtils.setStatusBarColor();
    initAio(context);
    //px.printPx();
  } catch (e) {
    PrintUtils.println("应用初始化异常:$e");
  }
}

// LibRouteObserver<PageRoute> routeObserver = LibRouteObserver<PageRoute>();
class MyApp extends StatelessWidget {
  // This widget is the root of your application.

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      // navigatorObservers: [routeObserver],
      //locale: Locale('en'),
      localizationsDelegates: AppStrings.localizationsDelegates()
      // localizationsDelegates:const [
      //   AppStrings.delegate,
      //   LibStrings.delegate,
      //   //fixme lib里的,必须加上去；不然获取S.of(context).key获取时会报空异常。
      //   //RefreshLocalizations.delegate,
      //   //fixme pull_to_refresh 下拉刷新上拉加载更多里的中英文配置。
      //   GlobalMaterialLocalizations.delegate,
      //   GlobalCupertinoLocalizations.delegate,
      //   GlobalWidgetsLocalizations.delegate,
      // ]
      ,
      supportedLocales: AppStrings.supportedLocales(),
      //fixme supportedLocales 支持的语言，必不可少，不然只会显示英文，不会显示中文。
      localeListResolutionCallback: (locales, supportedLocales) {
        //print("语言：$locales");
        // PrintUtils.println("语言：$locales\n${AppStrings.delegate}\n${LibStrings.delegate}\n${Intl.defaultLocale}");
        // Intl.defaultLocale = locales!.first.toString();
        // PrintUtils.println("${Intl.defaultLocale}");//zh_CN
        // LibStrings.delegate.load(locales!.first);
        // AppStrings.delegate.load(locales!.first);
        return;
      },
      debugShowCheckedModeBanner: false,
      title: 'BWG',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Builder(
        builder: (context) {
          init(context);
          return LaunchRoute();
        },
      ),
      scrollBehavior: getScrollBehavior(),
    );
  }
}
